package com.dcsec.server.bean;

public class Result<T> {
	/**
	 * 状态码
	 */
	protected String status;

	/**
	 * 信息
	 */
	protected String message;

	/**
	 * 结果体
	 */
	protected T data;

	public static <D> Result<D> create(String status) {
		Result<D> r=new Result<>();
		r.setStatus(status);
		return r;
	}

	/**
	 * Description:创建一个成功的结果体
	 *
	 * @author 唐海洋
	 * @Version 1.0 2016-8-24下午10:05:30
	 * @return
	 */
	public static <D> Result<D> createSuccessResult() {
		return create(ResultCode.SUCCESS);
	}

	/**
	 * Description:创建一个成功的结果体
	 *
	 * @author 唐海洋
	 * @Version 1.0 2016-8-24下午10:06:43
	 * @param data
	 *            将要返回的数据
	 * @return
	 */
	public static <D> Result<D> createSuccessResult(D data) {
		return (Result<D>) createSuccessResult().setData(data);
	}

	/**
	 * Description:创建一个默认的错误结果体
	 *
	 * @author 唐海洋
	 * @Version 1.0 2016-8-24下午10:07:09
	 * @return
	 */
	public static <D> Result<D> createErrorResult() {
		return create(ResultCode.ERROR);
	}

	/**
	 * Description:创建一个错误的结果体
	 *
	 * @author 唐海洋
	 * @Version 1.0 2016-8-24下午10:07:46
	 * @param message 消息信息
	 * @return
	 */
	public static <D> Result<D> createErrorResult(String message) {
		return (Result<D>) createErrorResult().setMessage(message);
	}

	public String getStatus() {
		return status;
	}

	public Result<T> setStatus(String status) {
		this.status = status;
		return this;
	}

	public String getMessage() {
		return message;
	}

	public Result<T> setMessage(String message) {
		this.message = message;
		return this;
	}

	public T getData() {
		return data;
	}

	public Result<T> setData(T data) {
		this.data = data;
		return this;
	}

	/**
	 * Description:判断该结果体是否是处理成功状态
	 *
	 * @author 唐海洋
	 * @Version 1.0 2016-8-24下午10:08:24
	 * @return
	 */
	public boolean isSuccess() {
		return ResultCode.SUCCESS.equals(this.status);
	}
}
